Avoid div-by-zero crash if vmx guest specifies bogus timer
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 18 Dec 2005 19:29:43 +0000 (20:29 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 18 Dec 2005 19:29:43 +0000 (20:29 +0100)
divisor.

Signed-off-by: Xiaofeng Ling <xiaofeng.ling@intel.com>
xen/arch/x86/vmx_intercept.c

index 69aeb4f32591f283e4202d3f58ad69c5a2c1f592..8bac8a8e5cead7793e79822226a37b37531998aa 100644 (file)
@@ -203,6 +203,12 @@ static void pit_cal_count(struct vmx_virpit *vpit)
     u64 nsec_delta = (unsigned int)((NOW() - vpit->inject_point));
     if (nsec_delta > vpit->period)
         VMX_DBG_LOG(DBG_LEVEL_1, "VMX_PIT:long time has passed from last injection!");
+    if(vpit->init_val == 0)
+    {
+        printk("PIT init value == 0!\n");
+        domain_crash_synchronous();
+    }
+
     vpit->count = vpit->init_val - ((nsec_delta * PIT_FREQ / 1000000000ULL) % vpit->init_val );
 }